<html><title>Eclipse Core Overview</title><body>
<h2 align="center">Eclipse Core Overview</h2>
<h2>Index</h2>
<ul>
  <li><a href="#projects">Project Breakdown</a></li>
  <li><a href="#builds">The Build</a></li>
  <li><a href="#bugs">Bug Reports</a></li>
</ul>
<h2><a name="projects"></a>Project Breakdown</h2>
<h3>Runtime Framework</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>The new OSGi code.</p>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.eclipse.osgi</li>
    <li>org.eclipse.osgi.services</li>
    <li>org.eclipse.osgi.util</li>
  </ul>
</blockquote>
<h3>Runtime</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>Code dealing with bootstrapping the system, the extension registry and 
      concurrency models, as well as utility classes.</p>
    <p>The <code>org.eclipse.core.boot </code>project contains the bootstrap code 
      needed to get the platform up and running. It calls the EclipseStarter in 
      OSGi which starts the framework. It is currently being investigated as to 
      whether or not this code can be merged into the Main.java class and this 
      project be removed from the SDK.</p>
    <p>The <code>org.eclipse.core.runtime </code>project contains the runtime 
      APIs. This includes the job manager, util classes (IPath, IProgressMonitor, 
      CoreException, etc), the new extension registry.</p>
    <p>The <code>org.eclipse.core.runtime.compatibility </code>project exists 
      for backwards compatibility purposes only. It contains deprecated APIs. 
      (mostly dealing with the old plug-in registry)</p>
    <p>The <code>Main.java </code>class in the <code>org.eclipse.platform </code>project 
      contains the code for the <code>startup.jar</code>. This code finds the 
      bootloader and allows Eclipse to start. This project also contains the files 
      which are found in the root of the Eclipse install.</p>
    <p>The <code>platform-launcher </code>project contains the C code for the 
      Eclipse executable. It is owned by Platform/Core but was written and generously 
      maintained by Platform/SWT since they have more experience in writing C 
      code. The executable handles special return codes from the application indicating 
      whether to restart, print out a message saying that there is info in the 
      .log file, etc. </p>
    <p>Note that there are problems running Eclipse with an IBM 1.4 JRE and plug-ins 
      having a requirement on the <code>org.apache.xerces</code> plug-in. Therefore, 
      there is currently a request into the Eclipse PMC to remove this plug-in 
      from the Eclipse SDK distribution. As an alternative, plug-in developers 
      are encouraged to code using the JAXP APIs available in the 1.4 JDK.</p>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.apache.xerces</li>
    <li>org.eclipse.core.boot</li>
    <li>org.eclipse.core.runtime</li>
    <li>org.eclipse.core.runtime.compatibility</li>
    <li>org.eclipse.core.tests.runtime</li>
    <li>org.eclipse.platform</li>
    <li>platform-launcher</li>
  </ul>
</blockquote>
<h3>Resources</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>The workspace APIs which includes everthing dealing with workspaces, resources, 
      markers, properties, and local history.</p>
    <p>Core Resources also contributes a library with filesystem calls. Although 
      not necessary for Eclipse to run, running with the appropriate resources 
      library will yield peformance enhancements as well as minor functionality 
      benefits. Currently the library is available for 5 different OSes (windows, 
      linux, hp-ux, macosx, and qnx) and it:</p>
    <ul>
      <li>bundles multiple OS calls into one function call</li>
      <li>implements #setReadOnly (java.io.File#setReadOnly is a no-op)</li>
      <li>improves timestamp granularity on some VMs</li>
    </ul>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.eclipse.core.resources</li>
    <li>org.eclipse.core.resources.linux</li>
    <li>org.eclipse.core.resources.win32</li>
    <li>org.eclipse.core.resources.hpux</li>
    <li>org.eclipse.core.resources.macosx</li>
    <li>org.eclipse.core.resources.qnx</li>
    <li>org.eclipse.core.tests.resources</li>
    <li>org.eclipse.core.tests.resources.saveparticipant</li>
    <li>org.eclipse.core.tests.resources.saveparticipant1</li>
    <li>org.eclipse.core.tests.resources.saveparticipant2</li>
    <li>org.eclipse.core.tests.resources.saveparticipant3</li>
  </ul>
</blockquote>
<h3>PDE-Build</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>Used to generate the build.xml Ant files for the builder.</p>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.eclipse.pde.build</li>
  </ul>
</blockquote>
<h3 align="left">WebDAV</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>Provides WebDAV support and is available as a separate download on the 
      Eclipse/downloads web page. This used to be a part of the Eclipse SDK proper 
      but was removed a while ago. (after release 1.0?) Note that the WebDAV plug-in 
      has NO dependancy on the Eclipse Runtime.</p>
    <p>Why does Core own this? For legacy reasons. In early releases of Eclipse 
      the VCM code was integrated tightly with Core and was done by the same team. 
      As Eclipse matured, the code was refactored and split apart.</p>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.eclipse.webdav</li>
  </ul>
</blockquote>
<h3>Misc</h3>
<blockquote> 
  <h4>Description</h4>
  <blockquote> 
    <p>The <code>org.eclipse.core.tests.harness</code> project contains helper 
      classes for the Core test suites. All Core test classes sub-class <code>EclipseWorkspaceTest</code>.</p>
  </blockquote>
  <h4>Projects</h4>
  <ul>
    <li>org.eclipse.core.tests.harness</li>
  </ul>
</blockquote>
<h2><a name="builds"></a>The Build</h2>
<p>The builder needs a couple of pieces of information (version, repository, username, 
  password) in order to include the correct versions of projects in a build. This 
  information is put into what we call a <code>map</code> file. Look in the <code>maps/</code> 
  folder of the <code>org.eclipse.releng</code> project to see the map files that 
  the builder uses to create the Eclipse integration builds. Here are some sample 
  lines from this file: </p>
<blockquote> 
  <p><code>plugin@org.eclipse.core.resources=v20031201,:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse<br>
    fragment@org.eclipse.core.resources.win32=v20031111,:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse,</code></p>
</blockquote>
<h3>Project Tag Naming Conventions</h3>
<p>Customary naming convention is the date. (e.g. <code>v20031129</code> for a 
  build on November 29, 2003) If there is a second (or third, etc) build on the 
  same day, then we just append a letter to the end of the previous tag. (e.g. 
  <code>v20031129a</code>)</p>
<p>For maintenance builds we use an indicator for the build, along with the date. 
  (e.g. <code>r21x_v20031124</code> for a maintenance build for Eclipse 2.1.1, 
  2.1.2, etc on November 24, 2003)</p>
<h3>Process</h3>
<ul>
  <li>test and release code changes</li>
  <li>version project in repository</li>
  <li>change line in map file to match project version</li>
  <li>release change to map file to HEAD</li>
  <li>the builder will automatically version the map file before beginning the 
    integration build</li>
</ul>
<h3>Build Tool</h3>
<p>The Release Engineering team has a build tool available on <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-releng-home/main.html">their 
  web page</a> and it will help you with the above process. The tool adds a <code>Team 
  -&gt; Release</code> item to the context menu for projects. It tags the project 
  and updates the line in the map file for you. Note that you still have to manually 
  commit the changes to the map file to the repository yourself but the tool will 
  bring up the <code>Sychronize</code> view for you.</p>
<h3>Build Schedule</h3>
<p>The build schedule found on the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-releng-home/main.html">Release 
  Engineering</a> team page on <a href="http://eclipse.org">Eclipse.org</a>.</p>
<h2><a name="bugs"></a>Bug Reports</h2>
<h3>Bug Lifecycle</h3>
<blockquote> 
  <p>For illustrated purposes I will use Platform/Core as an example.</p>
  <table width="87%" border="1">
    <tr> 
      <td width="22%"><div align="center"><strong>Owner</strong></div></td>
      <td width="23%"><div align="center"><strong>Status</strong></div></td>
      <td width="55%"><div align="center"><strong>Note</strong></div></td>
    </tr>
    <tr> 
      <td>platform-core-inbox</td>
      <td>NEW</td>
      <td>Bug is entered by user.</td>
    </tr>
    <tr> 
      <td>platform-core-inbox</td>
      <td>ASSIGNED</td>
      <td>More information is gathered (build id, steps to reproduce) and it is 
        determined that the bug report is real. This state is referred to as &quot;Open 
        Bugs&quot; and can best be described as bugs which are real but no one 
        is currently working on.</td>
    </tr>
    <tr> 
      <td>team member</td>
      <td>NEW/ASSIGNED</td>
      <td>Bug is assigned to team member to address or the team member takes an 
        &quot;Open&quot; bug and assigns it to themselves.</td>
    </tr>
    <tr> 
      <td>team member</td>
      <td>RESOLVED/FIXED</td>
      <td>Bug is fixed. Target milestone is added to report if none already exists.</td>
    </tr>
  </table>
  <p>&nbsp;</p>
</blockquote>
<h3>Component Breakdown</h3>
<blockquote>
<table width="86%" border="1">
  <tr> 
    <td width="15%"><div align="center"><strong>Product</strong></div></td>
    <td width="21%"><div align="center"><strong>Component</strong></div></td>
    <td width="64%"><div align="center"><strong>Note</strong></div></td>
  </tr>
  <tr> 
    <td>Equinox</td>
    <td>General</td>
      <td>Bugs reports against the new runtime and the OSGi projects.</td>
  </tr>
  <tr> 
    <td>Platform</td>
    <td>Core</td>
      <td>Bugs against the old runtime APIs (JobManager, IPath, etc) and the Workspace 
        APIs.</td>
  </tr>
  <tr> 
    <td>Platform</td>
    <td>WebDAV</td>
      <td>Bug reports against the <code>org.eclipse.webdav </code>project.</td>
  </tr>
  <tr> 
    <td>PDE</td>
    <td>Build</td>
      <td>Bug reports against the <code>org.eclipse.pde.build </code>project.</td>
  </tr>
</table>
</blockquote>
<p>&nbsp;</p></body></html>